package com.bright.ghj.overt.enums;

import com.bright.ghj.common.util.StringUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;

/**
 * @Author hxj
 * @Date 2024/1/23 15:47
 * @Description 预定义导航项目
 */
@Getter
@AllArgsConstructor
public enum NavigateItem {

    CW_VIEW_DATA_EDIT("cw-view-data-edit", "财务数据录入", null), // 录入导航由代码生成 无需根据配置表走 所以不用给menuId
    CW_VIEW_DATA_AUDIT("cw-view-data-audit", "财务数据审核", "0201"),
    CW_VIEW_DATA_PUBLISH("cw-view-data-publish", "财务数据发布", "0203"),

    // 用access数据库上传
    UPLOAD_BY_ACCESS("upload-by-access", "上传列表", "0502"),
    // 根据财务系统.bj中间文件上传
    UPLOAD_BY_CW_SYSTEM("upload-by-cw-system", "数据上传", "0501"),
    UPLOAD_TO_CITY("upload-to-city", "上传至党廉平台", "0503"),

    // 不再使用旧统计表
//    STAT_BY_YEAR("stat-by-year", "数据完成情况（按年）", null),
//    STAT_BY_MONTH("stat-by-month", "数据完成情况（按月）", "0602"),
    // 市平台“公开数据统计”的形式的统计表 只要有统计表权限的用户都能看到该导航项
    STAT_BY_ZT("stat-by-zt", "数据公开情况（按账套）", "0601"),
//    NOT_UPLOAD_ZT_LIST("not-upload-zt-list", "未上传单位明细表", "0603"),

    // 有这个导航的配置 先预留好
    SZ_VIEW_DATA("sz-view-data", "三资数据", "0504"),
    ZT_ADAPT("zt-adapt", "账套适配", "0505"),
    SYSTEM_CONFIGURE("system-config", "参数管理", "0401"),
    DIST_CONFIGURE("dist-config", "地区信息", "0101"),


    // 预定义党务和事务
    DW_VIEW_DATA_EDIT("dw-view-data-edit", "党务数据录入", null), // 录入导航由代码生成 无需根据配置表走 所以不用给menuId
    DW_VIEW_DATA_AUDIT("dw-view-data-audit", "党务数据审核", "2102"),
    DW_VIEW_DATA_PUBLISH("dw-view-data-publish", "党务数据发布", "2103"),
    SW_VIEW_DATA_EDIT("sw-view-data-edit", "事务数据录入", null),
    SW_VIEW_DATA_AUDIT("sw-view-data-audit", "事务数据审核", "2202"),
    SW_VIEW_DATA_PUBLISH("sw-view-data-publish", "事务数据发布", "2203")
    ;


    /**
     * 导航预定义唯一标识 前端根据此决定跳转页面
     */
    private final String menuKey;
    /**
     * 导航中文名称
     */
    private final String description;
    /**
     * 旧配置中的menuId
     */
    private final String menuId;

    // 被排除的menuId 新项目中不需要显示该导航
    public static final List<String> exceptMenuIdList = Arrays.asList("0202", "0602", "0603");

    public static NavigateItem getByMenuId(String menuId) {
        if (menuId != null) {
            for (NavigateItem value : values()) {
                if (StringUtil.equals(menuId, value.getMenuId())) {
                    return value;
                }
            }
        }
        return null;
    }

}
